In many environments, there is a need to identify objects within an image generated from a scan of a container that contains the objects. For example, in an airport security environment, an image generated from a scan of a bag may need to be analyzed to determine whether the bag contains any prohibited objects. As another example, in a medical environment, an image generated from a scan of a patient may need to be analyzed to determine whether the patient has a tumor. The scanning technology may be computed tomography (“CT”), and the images may be three-dimensional (“3D”) images.
To analyze an image, traditional image analysis techniques partition the image into multiple segments (groups of pixels or voxels) that each may represent an object within the image. This partitioning is referred to as image segmentation. A goal of image segmentation is to use the low-level information at each voxel to infer high-level semantics such as differentiating between foreground and background or finding an object. However, in many applications the source data is noisy or otherwise corrupted by artifacts, making low-level features such as edges or voxels difficult to detect.
Some image analysis techniques use additional domain knowledge to constrain the segmentation. For example, in a medical environment, a model with parameters describing characteristics of an organ (e.g., shape) may be used to identify a segment that contains that organ. Many environments, however, cannot readily use such models, for example, due to the large variety of objects that may be in a container. In such environments, the additional domain knowledge may be provided as a form of training data with samples of objects of interest. The image analysis techniques use the training data to learn parameters of the segmentation algorithm (e.g., thresholds, smoothness, and energy functionals). The use of training data, however, has some difficulties. One difficulty is that the collecting and labeling of the samples can be very labor-intensive. Another difficulty is that often no set of parameters exists that sufficiently represents the variations in the training data. Another difficulty is that the training data cannot represent unknown objects that have not been seen before (e.g., a new form of a prohibited object).